package com.edu.exam.enums.examination.security;

/**
 * 安全警报级别枚举
 *
 * 从SecurityAlert.AlertLevel迁移而来
 * 定义考试安全系统中警报的严重程度级别
 *
 * @author System
 * @version 1.0.0
 */
public enum SecurityAlertLevel {

    /**
     * 信息级别 - 最低级别，仅提供信息
     */
    INFO("INFO", "信息级别"),

    /**
     * 警告级别 - 需要注意的潜在问题
     */
    WARNING("WARNING", "警告级别"),

    /**
     * 错误级别 - 需要处理的问题
     */
    ERROR("ERROR", "错误级别"),

    /**
     * 严重级别 - 需要立即处理的严重问题
     */
    CRITICAL("CRITICAL", "严重级别"),

    /**
     * 紧急级别 - 最高级别，需要立即采取行动
     */
    EMERGENCY("EMERGENCY", "紧急级别");

    private final String code;
    private final String description;

    SecurityAlertLevel(String code, String description) {
        this.code = code;
        this.description = description;
    }

    public String getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    /**
     * 根据编码获取对应的枚举
     *
     * @param code 编码
     * @return 对应的枚举
     */
    public static SecurityAlertLevel fromCode(String code) {
        for (SecurityAlertLevel level : values()) {
            if (level.getCode().equals(code)) {
                return level;
            }
        }
        throw new IllegalArgumentException("Unknown security alert level code: " + code);
    }

    /**
     * 根据描述获取对应的枚举
     *
     * @param description 描述
     * @return 对应的枚举
     */
    @Override
    public String toString() {
        return description;
    }
}
